OBJECTIF : Analyser la base de données
# Import des données
data <- readRDS("/home/solene_petito/Bureau/Stage/Broken_devices/data/data1.rds") # base de données sur laquelle on va appliquer tous les changements
Broken_Devices_Data <- read.csv("/home/solene_petito/Bureau/Stage/Broken_devices/data/Broken-Devices-Data1-xlsx.csv",row.names=1) # base de données initiale sur laquelle on pourra se référer pour voir si les chgts ont bien été appliqués
# nombre d'observations
nb_obs <- nrow(data) # 968
# nombre de variables
nb_var <- ncol(data) # 164
La question posée était : Quel est le système d’exploitation de ce smartphone ?
Les réponses possibles étaient :
La plupart des propriétaires de smartphone ont donc des android (67% des personnes de la base).
Regardons maintenant le nombre de personnes rencontrant des dysfonctionnements pour chaque systèmes d’exploitation :
## Sytèmes.d.exploitation Nb_personnes Nb_personnes_dys Pourcentage_dys
## 1 IOS (Apple) 291 125 43
## 2 Android 652 264 40
## 3 Autre 12 7 58
## 4 Je ne sais pas 13 4 31
Le diagramme à barres suivant permet de visualiser cette répartition :
pbs= Count_VCM(data$RIDENTIFICATION_PROBLEMES,26)
nb_total_pbs <- sum(pbs[2,])
print(nb_total_pbs) #832
## [1] 832
# Initialisation des vecteurs pour stocker les valeurs de recence, année, et mois
recence <- c()
annee <- c()
mois <- c()
# Filtrer les données pour exclure les problèmes identifiés avec le code "27"
df <- data[which(data$RIDENTIFICATION_PROBLEMES != "27"),]
# Parcourir les colonnes de 81 à 105
for (i in 81:105) {
# Parcourir les lignes du dataframe filtré
for (j in 1:nrow(df)) {
val <- df[j, i]
# Vérifier si la valeur n'est pas NA avant de vérifier si elle est 4 ou 5
if (!is.na(val) && (val == 4 || val == 5)) {
RECENCE <- df[j, i - 25]
# Vérifier si RECENCE n'est pas NA et val n'est pas NULL
if (!is.na(RECENCE)) {
recence <- c(recence, RECENCE)
annee <- c(annee, df[j, "DATEOBTENTIONSMART_1"])
mois <- c(mois, df[j, "DATEOBTENTIONSMART_2"])
}
}
}
}
# Suppression de la raison 7 dans la liste recence
indices_rec_7= which(recence==7)
recence=recence[-c(indices_rec_7)]
annee=annee[-c(indices_rec_7)]
mois=mois[-c(indices_rec_7)]
# Afficher les résultats pour vérifier
print(recence)
## [1] 4 1 5 4 5 2 4 3 2 4 4 3 1 4 4 4 4 3 4 3 3 6 6 4 5 5 1 5 1 5 4 2 3 6 4 1 4
## [38] 4 5 3 4 3 1 1 3 2 5 6 3 2 4 2 3 5 4 6 2 4 2 2 5 4 1 1 2 3 4 6 1 5 3 6 2 5
## [75] 6 1 2 4 5 3 2 5 2 6 6 4 2 5 1 4 3 6 4 5 5 3 6 6 4 5 4 3 2 2 3 5 5 4 1 2 3
## [112] 4 2 4 3 4 4 3 5 4 6 1 1 4 3 2 5 4 2 5 4 1 2 3 4 3 5 3 4 4 3 4 5 3 3 2 5 1
## [149] 1 2 3 1 1 6 2 2 3 6 6 2 5 2 6 3 4 5 2 4 3 2 3 4 1 6 6 1 4 1 4 3 3 3 4 5 4
## [186] 4 4 2 6 6 6 2 4 4 3 4 5 4 4 4 4 3 3 4 3 5 1 4 4 5 2 4 3 4 5 4 5 5 6 4 3 4
## [223] 2 1 3 5 3 5 6 6 4 4 2 6 4 1 3 1 3 2 1 1 5 1 2 3 2 6 5 4 5 3 2 2 5 3 3 3 6
## [260] 5 3 3 6 4 5 4 4 5 5 2 3 3 4 4 6 4 4 4 3 2 3 5 5 5 5 3 5 6 6 6 6 4 4 5 6 5
## [297] 4 2 3 6 4 4 4 3 4 3 2 2 3 2 5 4 4 2 4 5
print(annee)
## [1] 2021 2023 2022 2020 2019 2020 2021 2022 2023 2019 2019 2020 2022 2021 2021
## [16] 2019 2022 2022 2021 2023 2023 2023 2018 2021 2019 2015 2023 2020 2017 2020
## [31] 2022 2020 2022 2008 2023 2023 2022 2022 2020 2022 2022 2023 2022 2022 2021
## [46] 2022 2020 2021 2022 2023 2022 2023 2022 2021 2021 2020 2023 2018 2023 2020
## [61] 2021 2021 2023 2023 2020 2021 2022 2023 2023 2015 2022 2018 2023 2020 2019
## [76] 2020 2023 2021 2019 2022 2023 2019 2023 2017 2018 2020 2022 2015 2023 2022
## [91] 2023 2020 2019 2020 2020 2023 2019 2019 2016 2020 2022 2023 2023 2021 2021
## [106] 2020 2020 2019 2022 2023 2022 2023 2021 2022 2005 2020 2022 2022 2022 2021
## [121] 2018 2022 2022 2021 2020 2022 2021 2023 2023 2020 2022 2023 2022 2022 2021
## [136] 2020 2019 2022 2020 2022 2022 2021 2015 2020 2022 2020 2020 2022 2020 2023
## [151] 2022 2023 2023 2019 2023 2023 2023 2019 2020 2023 2020 2021 2018 2023 2020
## [166] 2020 2023 2021 2018 2021 2022 2021 2023 2018 2019 2023 2022 2022 2020 2023
## [181] 2020 2022 2019 2019 2020 2021 2021 2022 2019 2019 2020 2023 2022 2020 2021
## [196] 2018 2020 2019 2021 2021 2022 2022 2023 2021 2020 2020 2023 2020 2022 2019
## [211] 2023 2021 2022 2019 2023 2020 2020 2018 2019 2023 2023 2020 2023 2022 2019
## [226] 2021 2023 2018 2019 2019 2023 2020 2023 2023 2019 2020 2022 2022 2019 2023
## [241] 2021 2023 2020 2020 2023 2022 2023 2023 2020 2021 2019 2020 2023 2020 2020
## [256] 2019 2023 2022 2018 2021 2023 2022 2019 2021 2019 2022 2020 2018 2019 2023
## [271] 2023 2022 2020 2021 2018 2021 2022 2022 2023 2022 2022 2019 2020 2019 2022
## [286] 2023 2015 2018 2020 2019 2020 2021 2016 2020 2020 2018 2021 2023 2021 2018
## [301] 2019 2019 2022 2023 2020 2022 2021 2022 2022 2022 2020 2022 2021 2023 2022
## [316] 2020
print(mois)
## [1] 12 10 2 10 2 9 12 99 2 99 99 6 6 2 12 8 5 11 9 2 5 11 5 99 12
## [26] 2 9 6 11 6 9 1 10 1 1 10 2 5 6 3 99 2 1 6 12 1 99 2 1 7
## [51] 9 2 9 7 12 4 6 3 2 99 7 12 1 7 6 12 1 11 10 2 4 7 2 99 99
## [76] 6 8 9 9 8 5 7 3 4 5 10 1 2 6 10 2 9 4 9 11 5 3 11 8 4
## [101] 1 5 2 3 7 8 99 9 9 3 6 8 11 3 3 12 4 2 4 2 2 4 6 2 12
## [126] 6 2 99 7 8 5 6 1 12 9 99 9 12 6 1 8 5 6 4 12 6 99 5 99 2
## [151] 1 10 10 2 2 10 2 10 6 2 6 9 8 8 4 6 2 3 1 9 11 12 10 5 2
## [176] 11 7 5 6 2 9 8 10 7 2 99 12 3 2 4 9 2 3 12 3 6 99 99 9 12
## [201] 5 11 6 1 2 11 99 8 1 9 5 4 8 10 7 9 99 6 2 99 2 6 2 11 99
## [226] 7 2 6 4 2 99 9 10 5 5 6 11 9 11 2 7 6 9 3 2 2 4 11 2 99
## [251] 4 9 2 4 99 99 2 7 8 11 8 12 7 99 4 7 12 6 9 3 2 7 1 2 2
## [276] 12 1 3 8 8 12 7 2 10 2 2 6 5 11 2 9 1 8 6 6 3 1 2 1 6
## [301] 9 99 2 2 12 7 9 6 11 6 8 5 9 5 3 6
Changement du mois non renseigné indiqué par la valeur 99, par un mois “moyen” d’obtention pour l’année en question :
indices_mois_99 <- which(mois==99)
for (i in 1:length(indices_mois_99)){
indice=indices_mois_99[i]
year=annee[i]
indices_annees = which(annee==year)
liste_mois=mois[indices_annees]
liste_mois=liste_mois[liste_mois!=99]
mois[indice]=round(mean(liste_mois))
}
print(mois)
## [1] 12 10 2 10 2 9 12 7 2 5 6 6 6 2 12 8 5 11 9 2 5 11 5 7 12
## [26] 2 9 6 11 6 9 1 10 1 1 10 2 5 6 3 6 2 1 6 12 1 7 2 1 7
## [51] 9 2 9 7 12 4 6 3 2 7 7 12 1 7 6 12 1 11 10 2 4 7 2 6 5
## [76] 6 8 9 9 8 5 7 3 4 5 10 1 2 6 10 2 9 4 9 11 5 3 11 8 4
## [101] 1 5 2 3 7 8 6 9 9 3 6 8 11 3 3 12 4 2 4 2 2 4 6 2 12
## [126] 6 2 6 7 8 5 6 1 12 9 7 9 12 6 1 8 5 6 4 12 6 6 5 7 2
## [151] 1 10 10 2 2 10 2 10 6 2 6 9 8 8 4 6 2 3 1 9 11 12 10 5 2
## [176] 11 7 5 6 2 9 8 10 7 2 7 12 3 2 4 9 2 3 12 3 6 6 6 9 12
## [201] 5 11 6 1 2 11 6 8 1 9 5 4 8 10 7 9 7 6 2 5 2 6 2 11 5
## [226] 7 2 6 4 2 5 9 10 5 5 6 11 9 11 2 7 6 9 3 2 2 4 11 2 5
## [251] 4 9 2 4 7 6 2 7 8 11 8 12 7 4 4 7 12 6 9 3 2 7 1 2 2
## [276] 12 1 3 8 8 12 7 2 10 2 2 6 5 11 2 9 1 8 6 6 3 1 2 1 6
## [301] 9 5 2 2 12 7 9 6 11 6 8 5 9 5 3 6
Création des dates avec l’année et le mois renseignés dans les listes annee et mois précédemment :
dates = c()
for (i in 1:length(recence)){
date_str <- paste(annee[i], sprintf("%02d", mois[i]), "01", sep = "-")
dates=c(dates,date_str)
}
dates
## [1] "2021-12-01" "2023-10-01" "2022-02-01" "2020-10-01" "2019-02-01"
## [6] "2020-09-01" "2021-12-01" "2022-07-01" "2023-02-01" "2019-05-01"
## [11] "2019-06-01" "2020-06-01" "2022-06-01" "2021-02-01" "2021-12-01"
## [16] "2019-08-01" "2022-05-01" "2022-11-01" "2021-09-01" "2023-02-01"
## [21] "2023-05-01" "2023-11-01" "2018-05-01" "2021-07-01" "2019-12-01"
## [26] "2015-02-01" "2023-09-01" "2020-06-01" "2017-11-01" "2020-06-01"
## [31] "2022-09-01" "2020-01-01" "2022-10-01" "2008-01-01" "2023-01-01"
## [36] "2023-10-01" "2022-02-01" "2022-05-01" "2020-06-01" "2022-03-01"
## [41] "2022-06-01" "2023-02-01" "2022-01-01" "2022-06-01" "2021-12-01"
## [46] "2022-01-01" "2020-07-01" "2021-02-01" "2022-01-01" "2023-07-01"
## [51] "2022-09-01" "2023-02-01" "2022-09-01" "2021-07-01" "2021-12-01"
## [56] "2020-04-01" "2023-06-01" "2018-03-01" "2023-02-01" "2020-07-01"
## [61] "2021-07-01" "2021-12-01" "2023-01-01" "2023-07-01" "2020-06-01"
## [66] "2021-12-01" "2022-01-01" "2023-11-01" "2023-10-01" "2015-02-01"
## [71] "2022-04-01" "2018-07-01" "2023-02-01" "2020-06-01" "2019-05-01"
## [76] "2020-06-01" "2023-08-01" "2021-09-01" "2019-09-01" "2022-08-01"
## [81] "2023-05-01" "2019-07-01" "2023-03-01" "2017-04-01" "2018-05-01"
## [86] "2020-10-01" "2022-01-01" "2015-02-01" "2023-06-01" "2022-10-01"
## [91] "2023-02-01" "2020-09-01" "2019-04-01" "2020-09-01" "2020-11-01"
## [96] "2023-05-01" "2019-03-01" "2019-11-01" "2016-08-01" "2020-04-01"
## [101] "2022-01-01" "2023-05-01" "2023-02-01" "2021-03-01" "2021-07-01"
## [106] "2020-08-01" "2020-06-01" "2019-09-01" "2022-09-01" "2023-03-01"
## [111] "2022-06-01" "2023-08-01" "2021-11-01" "2022-03-01" "2005-03-01"
## [116] "2020-12-01" "2022-04-01" "2022-02-01" "2022-04-01" "2021-02-01"
## [121] "2018-02-01" "2022-04-01" "2022-06-01" "2021-02-01" "2020-12-01"
## [126] "2022-06-01" "2021-02-01" "2023-06-01" "2023-07-01" "2020-08-01"
## [131] "2022-05-01" "2023-06-01" "2022-01-01" "2022-12-01" "2021-09-01"
## [136] "2020-07-01" "2019-09-01" "2022-12-01" "2020-06-01" "2022-01-01"
## [141] "2022-08-01" "2021-05-01" "2015-06-01" "2020-04-01" "2022-12-01"
## [146] "2020-06-01" "2020-06-01" "2022-05-01" "2020-07-01" "2023-02-01"
## [151] "2022-01-01" "2023-10-01" "2023-10-01" "2019-02-01" "2023-02-01"
## [156] "2023-10-01" "2023-02-01" "2019-10-01" "2020-06-01" "2023-02-01"
## [161] "2020-06-01" "2021-09-01" "2018-08-01" "2023-08-01" "2020-04-01"
## [166] "2020-06-01" "2023-02-01" "2021-03-01" "2018-01-01" "2021-09-01"
## [171] "2022-11-01" "2021-12-01" "2023-10-01" "2018-05-01" "2019-02-01"
## [176] "2023-11-01" "2022-07-01" "2022-05-01" "2020-06-01" "2023-02-01"
## [181] "2020-09-01" "2022-08-01" "2019-10-01" "2019-07-01" "2020-02-01"
## [186] "2021-07-01" "2021-12-01" "2022-03-01" "2019-02-01" "2019-04-01"
## [191] "2020-09-01" "2023-02-01" "2022-03-01" "2020-12-01" "2021-03-01"
## [196] "2018-06-01" "2020-06-01" "2019-06-01" "2021-09-01" "2021-12-01"
## [201] "2022-05-01" "2022-11-01" "2023-06-01" "2021-01-01" "2020-02-01"
## [206] "2020-11-01" "2023-06-01" "2020-08-01" "2022-01-01" "2019-09-01"
## [211] "2023-05-01" "2021-04-01" "2022-08-01" "2019-10-01" "2023-07-01"
## [216] "2020-09-01" "2020-07-01" "2018-06-01" "2019-02-01" "2023-05-01"
## [221] "2023-02-01" "2020-06-01" "2023-02-01" "2022-11-01" "2019-05-01"
## [226] "2021-07-01" "2023-02-01" "2018-06-01" "2019-04-01" "2019-02-01"
## [231] "2023-05-01" "2020-09-01" "2023-10-01" "2023-05-01" "2019-05-01"
## [236] "2020-06-01" "2022-11-01" "2022-09-01" "2019-11-01" "2023-02-01"
## [241] "2021-07-01" "2023-06-01" "2020-09-01" "2020-03-01" "2023-02-01"
## [246] "2022-02-01" "2023-04-01" "2023-11-01" "2020-02-01" "2021-05-01"
## [251] "2019-04-01" "2020-09-01" "2023-02-01" "2020-04-01" "2020-07-01"
## [256] "2019-06-01" "2023-02-01" "2022-07-01" "2018-08-01" "2021-11-01"
## [261] "2023-08-01" "2022-12-01" "2019-07-01" "2021-04-01" "2019-04-01"
## [266] "2022-07-01" "2020-12-01" "2018-06-01" "2019-09-01" "2023-03-01"
## [271] "2023-02-01" "2022-07-01" "2020-01-01" "2021-02-01" "2018-02-01"
## [276] "2021-12-01" "2022-01-01" "2022-03-01" "2023-08-01" "2022-08-01"
## [281] "2022-12-01" "2019-07-01" "2020-02-01" "2019-10-01" "2022-02-01"
## [286] "2023-02-01" "2015-06-01" "2018-05-01" "2020-11-01" "2019-02-01"
## [291] "2020-09-01" "2021-01-01" "2016-08-01" "2020-06-01" "2020-06-01"
## [296] "2018-03-01" "2021-01-01" "2023-02-01" "2021-01-01" "2018-06-01"
## [301] "2019-09-01" "2019-05-01" "2022-02-01" "2023-02-01" "2020-12-01"
## [306] "2022-07-01" "2021-09-01" "2022-06-01" "2022-11-01" "2022-06-01"
## [311] "2020-08-01" "2022-05-01" "2021-09-01" "2023-05-01" "2022-03-01"
## [316] "2020-06-01"
# Définir les dates de début et de fin
date_debut <- as.Date("2022-05-01")
date_fin <- as.Date("2023-11-01")
# Calculer la différence en jours
diff_jours <- as.numeric(difftime(date_fin, date_debut, units = "days"))
# Afficher le résultat
print(diff_jours)
## [1] 549
# Année et mois en chiffres
annee <- 2022
mois <- 10
# Convertir en chaîne de caractères au format "YYYY-MM-DD"
date_str <- paste(annee, sprintf("%02d", mois), "01", sep = "-")
# Afficher la chaîne de caractères
print(date_str)
## [1] "2022-10-01"
liste=c(0,list(c(1,83)),list(c(84,365)),list(c(366,730)),list(c(731,1095)),1096)
a=liste[[2]]
length(a)
## [1] 2
# Date de départ
date_depart <- as.Date("2022-12-01")
# Ajouter 500 jours
date_nouvelle <- date_depart + 500
# Afficher la nouvelle date
print(date_nouvelle)
## [1] "2024-04-14"
mois
## [1] 10
mois[-1]
## numeric(0)
Combien de personnes ont acheté leur smartphone neuf ? Combien l’ont eu d’occasion ? Combien l’on acheté reconditionné ? Le graphe suivant nous apporte plus de détails :
Parmis ces différents états quelle est la part de dysfonctionnements ?
## État Nb_personnes Nb_personnes_dys Pourcentage_dys
## 1 Neuf 792 316 40
## 2 D'occasion 88 45 51
## 3 Reconditionné 83 37 45
## 4 Je ne sais pas 5 2 40
Les différentes catégories pourraient être :
Problèmes matériels : Problème avec l’écran, Problème de sensibilité du tactile, Problème avec l’appareil photo, Problème avec la lampe torche ou le flash, Problème avec le micro, Problème de son, Problème de prise jack, Problème de chargement, Problème de batterie, Problème de capteurs, Problème avec les boutons, Problème de vibreur
Problèmes de connectivité (ou de réseau) : Problème avec le GPS, Problème de Wi-Fi, Problème de Bluetooth ou de transferts de fichiers sans fil, Problème de téléphonie, Problème d’accès à Internet
Problèmes logiciels : Système d’exploitation non mis à jour, Applications ne pouvant pas être téléchargées ou mises à jour, Fonctionnalité qui ne marche plus, Dysfonctionnement logiciel, Problèmes avec des applications
Problèmes de performance : Problème de lenteur, Stockage saturé
Problèmes divers : Problème lié à une fonctionnalité manquante, Autre
label_dys <- c("Matériel","Logiciel","Réseau","Performance","Divers")
materiel <- c(1,2,1,3,4,6,7,8,9,10,11,12,16,17)
logiciel <- c(19,20,22,23,24)
reseau <- c(5,11,13,14,15)
performance <- c(18,25)
divers <- c(21,26)
# Trouver la liste qui contient le plus d'éléments pour après définir le nombre de colonnes de notre matrice
max_length <- max(length(materiel), length(logiciel), length(reseau), length(performance), length(divers))
# Initialiser la matrice avec des zéros
matrice_cat <- matrix(0, nrow = 5, ncol = max_length)
# Remplir les lignes de la matrice avec les listes
matrice_cat[1, 1:length(materiel)] <- materiel
matrice_cat[2, 1:length(logiciel)] <- logiciel
matrice_cat[3, 1:length(reseau)] <- reseau
matrice_cat[4, 1:length(performance)] <- performance
matrice_cat[5, 1:length(divers)] <- divers
# Afficher la matrice
print(matrice_cat)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,] 1 2 1 3 4 6 7 8 9 10 11 12 16 17
## [2,] 19 20 22 23 24 0 0 0 0 0 0 0 0 0
## [3,] 5 11 13 14 15 0 0 0 0 0 0 0 0 0
## [4,] 18 25 0 0 0 0 0 0 0 0 0 0 0 0
## [5,] 21 26 0 0 0 0 0 0 0 0 0 0 0 0
Le tableau suivant donne le nombre de dysfonctionnements rencontrés pour chaque catégorie, et la part de chaque catégorie par rapport au nombre total de dysfonctionnements qui est de 832 :
## Dysfonctionnements Nb_dys Pourcentage_dys
## 1 Matériel 392 47
## 2 Logiciel 160 19
## 3 Réseau 115 14
## 4 Performance 176 21
## 5 Divers 31 4
Le graphique à barres suivant permet de visualiser ces valeurs :
Parmis ces différentes catégories quels sont les types de gênes ressentis pour chacun des dysfonctionnements, le tableau suivant indique ces différents types de gênes ressenties pour chacunes des catégories en pourcentage :
## Dysfonctionnements Nb_dys Trés.gênant Plutôt.gênant Plutôt.pas.gênant
## 1 Matériel 392 31 46 19
## 2 Logiciel 160 29 50 19
## 3 Réseau 115 35 48 15
## 4 Performance 176 36 50 14
## 5 Divers 31 10 39 29
## Pas.gênant.du.tout
## 1 4
## 2 2
## 3 2
## 4 0
## 5 10
Le graphique à barres suivant permet de visualiser cette répartion :
indice_colonne <- which(names(data) == "RECENCE_PROBLEMES_A1")
print(indice_colonne) # 106
## [1] 56
indice_colonne <- which(names(data) == "REPARATION_A1")
print(indice_colonne) # 81
## [1] 81
indice_colonne <- which(names(data) == "RECENCE_PROBLEMES_A25")
print(indice_colonne) # 80
## [1] 80
indice_colonne <- which(names(data) == "REPARATION_A25")
print(indice_colonne) #105
## [1] 105
81-56
## [1] 25